Context menu fragment management

ABSTRACT

Context menu fragment management includes obtaining an event triggering a display of a context menu, and generating a first portion of the context menu. Generating the first portion includes performing an operation in a context menu fragment expression using data from a data source to obtain a context menu fragment identifier, selecting a context menu fragment identified by the context menu fragment identifier, and adding the context menu fragment to the context menu. Context fragment management further includes generating a second portion of the context menu, and presenting the context menu.

BACKGROUND

A web application is a software application that executes in a webbrowser. The web application may include one or more features, such asgraphical user interface widgets, processes, and other aspects of theweb application. In developing a web application, a developer may desireto use features in one part of a web application into another part ofthe web application. In order to use features from one part of a webapplication into another, the developer may directly copy the part ofthe web application to the other part of the web application.Alternatively, in the case of processes, the developer may include aprocedure call to the process.

BRIEF DESCRIPTION OF DRAWINGS

FIGS. 1, 2.1, 2.2, and 3 show schematic diagrams of systems inaccordance with one or more embodiments of the technology.

FIGS. 4, 5.1, and 5.2 show flowcharts in accordance with one or moreembodiments of the technology.

FIGS. 6.1, 6.2, and 6.3 show an example in accordance with one or moreembodiments of the technology.

FIG. 7 shows a computing system in accordance with one or moreembodiments of the technology.

DETAILED DESCRIPTION

Specific embodiments of the technology will now be described in detailwith reference to the accompanying figures. Like elements in the variousfigures are denoted by like reference numerals for consistency.

In the following detailed description of embodiments of the technology,numerous specific details are set forth in order to provide a morethorough understanding of the technology. However, it will be apparentto one of ordinary skill in the art that the technology may be practicedwithout these specific details. In other instances, well-known featureshave not been described in detail to avoid unnecessarily complicatingthe description.

Throughout the application, ordinal numbers (e.g., first, second, third,etc.) may be used as an adjective for an element (i.e., any noun in theapplication). The use of ordinal numbers is not to imply or create anyparticular ordering of the elements nor to limit any element to beingonly a single element unless expressly disclosed, such as by the use ofthe terms “before”, “after”, “single”, and other such terminology.Rather, the use of ordinal numbers is to distinguish between theelements. By way of an example, a first element is distinct from asecond element, and the first element may encompass more than oneelement and succeed (or precede) the second element in an ordering ofelements.

Embodiments are directed to context menu fragment management to allowfor portions of a context menu to be reused between context menus. Acontext menu is a menu of options, defined for a data type, which isdisplayed when a user selects an instance of the data type. Duringexecution, an event triggering a display of the context menu may betriggered. At least one portion of the context menu is generated byperforming an operation in a context menu fragment expression to obtaina context menu fragment identifier. The context menu fragment identifiedby the context menu fragment identifier is added to the context menu.Another portion of the context menu is also generated, and the contextmenu is presented. Thus, a user is able to select from menu optionsoriginating from a variety of sources while a developer may develop onlya single context menu fragment.

FIG. 1 shows a schematic diagram of a system in accordance with one ormore embodiments of the technology. Specifically, FIG. 1 shows aschematic diagram of an environment (100) for developing and executing aweb application that implements the context menu fragment management. Asshown in FIG. 1, the environment (100) includes backend services (102),a runtime framework (104), a component library (106), and an applicationmodel (108). Each of the aforementioned components is described below.

In one or more embodiments of the technology, backend services (102) areservices that are not shown to the developer and ease the development ofthe web application design (110). The backend services (102) may includeapplication services (112) and platform services (114). In one or moreembodiments of the technology, the application services (112) allow auser interface based web application to be built on top of a genericmodel of a web application.

In one or more embodiments of the technology, the platform services(114) are services that manage the application for multiple differentplatforms. The multiple different platforms may have heterogeneousoperating systems, devices, and/or display device sizes.

In one or more embodiments of the technology, the runtime framework(104) provides a runtime environment for a web application executable(158). Specifically, the runtime framework (104) manages the data andevents of the executing web application executable (158). The runtimeframework (104) is described in FIG. 2 and below.

In one or more embodiments of the technology, the component library(106) is a library of application components that a developer may add tothe web application design (110). In other words, the developer mayselect components from the component library (106) to add functionalityto the web application design (110). The component library (106) mayinclude user interface (UI) components and processing components.

In one or more embodiments of the technology, UI components arecomponents that are displayed to an end user. In other words, instancesof the UI components are displayed on a display device. In one or moreembodiments of the technology, the UI components may include, but arenot limited to, buttons (116) (e.g., radio buttons, common buttons),menus (118) (e.g., drop down menu, check boxes), charts (120), layouts(122), inputs (e.g., fields) (124) and combo boxes (130). UI componentsin the component library may each be associated with a set of options.The set of options define the execution of the UI component. Namely, theset of options define how a particular instance of the component isexecuted. Options associated with the UI components may includeformatting, any text that is displayed, any action that is to beperformed when the UI component is selected, other options, and/or anycombination thereof. The action may be to: perform an operation on thepage, transition to a specific static page, evaluate an expression todetermine the page for transitioning, and/or perform another operation.

In one or more embodiments of the technology, the expression may specifyone or more data sources and operations to perform on the data from oneor more data sources. A data source is a location of data that is notwithin the expression. For example, the data source may be anotherportion of the application page or a data repository. For example,another portion of the application page may be a text field, drop downmenu option, or other option. Data from the data source is used toevaluate the operations in the expression. For example, the operationmay include a conditional statement based on the data obtained. By wayof another example, the operation may be to perform an end usersubmitted action specified in another field of the page.

In one or more embodiments of the technology, the processing componentsare components that are hidden to the end user (i.e., are not displayedto the end user). For example, the processing components may includeevents (126), result lists (128), formatter (132), functions (134),actions (136), and libraries (138). Each of the processing componentsare discussed below.

Formatter (132) are instructions which enable arranging of the data inspecific formats in accordance with one or more embodiments of thetechnology. A formatter may be application to number, date time values,other values, or a combination thereof. In accordance with one or moreembodiments of the technology, functions (134) are the re-usable pieceof code, which takes a set of inputs and return an output. Examples offunctions include concat, substring, min, max, and other functions.

In accordance with one or more embodiments of the technology, an action(136) is a piece of reusable executable functionality that can beabstracted out of any particular component so that the action may beusefully shared among multiple pages and/or context menus. Exampleactions include update, delete, create, check-in, check-out, download,and other actions.

In accordance with one or more embodiments of the technology, a library(138) is a group of files which constitute utility, and infrastructurecode. Example libraries include application startup code, actionmanager, type manager, utility, and logger. The processing componentsmay also each be associated with a set of options that define howprocessing components are used.

In one or more embodiments of the technology, an application model (108)is a generic model for any web application. The application modelincludes pages (140), fragments (142), data actions and data sources(144), session variables (146), application master (148), context menus(150), action flows (152), and a pick list (154). Each of thesecomponents of the application model is described below.

A page (140) in the application model (108) is a template for a webpage. In other words, a page in the application model (108) is atemplate for a complete and individual document that is displayable tothe end user. An activity fragment (142) represents at least a portionof an activity. In other words, an activity is a defined sequence ofactions that an end user may perform using the web application. Anactivity fragment is a portion of the defined sequence of actions. Dataactions and data sources (144) define the storage structure and storagelocation of the data and the actions to perform on the data.

Session variables (146) are the variables stored for a particularsession between the end user and the web application executable (158).For example, session variables (146) may include connection variablesand information about the end user, such as the user's credentials(e.g., user identifier), role of the end user, and other information.

The application master (148) defines the global look and feel of the webapplication in accordance with one or more embodiments of thetechnology. For example, the application master (148) may includevarious banners, menu items, fonts, colors, and other features that aredisplayed and surround the individual pages. By way of another example,the application master (148) may include a template on which the pages(140) are based.

Context menus (150) are instances of menus that are dependent on thecontext in which the menu is selected. Context menus are discussed infurther detail below and in FIG. 2.1.

Action flows (152) are a sequence of actions that are performed. Actionflows may or may not have user interaction. For example, an action flowmay be completely automatic. By way of another example, an action flowmay be a defined sequence of actions by which a user is guided using theweb application.

In one or more embodiments of the technology, a pick list (154) is alist of displayed items from which a set of items may be selected. Inother words, more than one displayed item may be selected from a picklist.

The web application design (110) is a particular design of a webapplication created by a developer. Specifically, the web applicationdesign (110) includes instances of the components of the applicationmodel (108) and component library (106), may execute on the runtimeframework (104) and use the backend services (102).

The web application design (110) is connected to a builder (156) inaccordance with one or more embodiments of the technology. The builder(156) provides a UI for a developer to create the web application design(110). In some embodiments, the developer does not need to knowprogramming languages or other development knowledge to build the webapplication design. Rather, the builder (156) provides an interface bywhich the developer can primarily drag and drop components into a webapplication design (110), and enter parameters into fields to create theweb application design (110). Thus, in some embodiments, a developer maybe a business analyst rather than have any training in applicationdevelopment using a programming language.

The UI of the builder (156) may include editor features and sub-systems.The editor features may include editors for modifying various aspects orviews of the web application design, and/or a builder UI to assist inthe development of the web application design in accordance with one ormore embodiments of the technology. For example, the editors may includebusiness objects, documents, cases, searches, reports, pages, roles,apps, widgets, and process editors. The builder UI may include a newartifact wizard, add-on top-level menu, add-on tool bar buttons, contextmenus, an artifacts properties page, and a model editor.

The builder (156) also includes functionality to create the webapplication executable (158) from the web application design (110). Inother words, the builder constructs the instructions for the webapplication executable from the web application design that is createdusing a drag and drop framework in accordance with one or moreembodiments of the technology. The builder (156) may include componentsand functionality to perform artifact management, validate the webapplication, generate code, package and deploy the web application. Thebuilder (156) may also include components functionality to performsource control and project/library management.

FIG. 2.1 shows a schematic of a context menu definition (200) inaccordance with one or more embodiments of the technology. As discussedabove, context menus are instances of menus that are dependent on thecontext of the execution environment in which the menu is selected. Inparticular, a context menu is a menu of options, defined for a data type(202), which is displayed when a user selects an instance of the datatype. For example, the data type (202) may be a particular page of theweb application, a business object that represents a real-world objectused by a business (e.g., customer, product, employer, company, etc.), agraphical user interface (GUI) widget displayable on a webpage of a webapplication, or another type of data.

The context menu may include multiple menu options (e.g., menu option Q(204), menu option R (206), menu option S (208), menu option T (210)). Amenu option is an item that may be selected depending on a context. Eachmenu option (e.g., menu option Q (204), menu option R (206), menu optionS (208), menu option T (210)) may have a name (not shown), one or moreactions (not shown), and one or more attributes (not shown). The name ofthe menu option is the selectable label displayed to the end user. Theaction corresponds to the steps that are performed when the menu optionis selected. For example, the action may be to save, delete, formataccording to the menu option, or another action.

The attributes of a menu option (e.g., menu option Q (204), menu optionR (206), menu option S (208), menu option T (210)) may include, forexample, the display state of the menu option, the enabled state of themenu option, and identifier of sub-menu options (e.g., sub-menu option W(212), sub-menu option V (214)). The display state has a valueindicating whether the menu option is displayed or hidden. If displayed,an end user may view the menu option. If disabled, the menu option mayexist in the instructions, but the end user may not see the menu option.The enabled state has a value indicating whether the menu option isenabled or disabled. If enabled, an end user may select the menu option.If disabled, the end user may not select the menu option. Sub-menuoptions (e.g., sub-menu option W (212), sub-menu option V (214)) aremenu options that may be displayed when a parent menu option (e.g., menuoption Q (204)) is selected. In one or more embodiments of thetechnology, all, some, or none of the menu options (e.g., menu option Q(204), menu option R (206), menu option S (208), menu option T (210))may have sub-menu options (e.g., sub-menu option W (212), sub-menuoption V (214)).

A context menu may include multiple portions (e.g., portion M (216),portion N (218)). In at least some embodiments of the technology, aportion of the context menu is a contiguous sequence of menu options forthe context menu. Although FIG. 2.1 shows a particular ordering ofportions, any ordering may exist without departing from the scope of thetechnology. Further, the portions may or may not have visibledelineators that are displayed between portions when the context menu isdisplayed. One or more portions (e.g., portion M (216)) of the contextmenu may have menu options defined directly in the context menudefinition. Some or all portions (e.g., portion N (218)) may beindirectly defined based on a context menu expression (220).

In one or more embodiments of the technology, the context menu fragmentexpression (220) is a function that defines which context menu fragment(222) to include in the context menu. In some embodiments, the functionis a simple assignment that has a constant context menu fragmentidentifier. In other embodiments, the context menu fragment expression(220) includes one or more operations in which, given a set of inputdata, generates output of a context menu fragment identifier from a setof possible context menu fragment identifiers.

A context menu fragment (222) is an incomplete section of context menuthat may be incorporated into one or more context menus. In particular,a context menu fragment is separately stored from the context menu andmay be defined for multiple context menus. As shown in FIG. 2.1, similarto the menu options (e.g., menu option Q (204), menu option R (206))that are directly in the context menu definition, context menu fragmentsmay have menu options (e.g., menu option S (208), menu option T (210)).Context menu fragments are discussed below with reference to FIG. 2.2.

Although FIG. 2.1 shows a single context menu fragment (222), multiplecontext menu fragments may be defined. In such a scenario, each contextmenu fragment may be selectable by the context menu fragment expression(220) depending on the particular execution of the web application. Forexample, a first context menu fragment may be defined for a case inwhich the end user is an employee and a second context menu fragment maybe defined for a case in which the end user is a network administrator.In the example, the context menu fragment expression includes, as input,a role of the end user, and the first context menu fragment or thesecond context menu fragment may only be selected after the role of theend user is determinable.

FIG. 2.2 shows a schematic diagram of a context menu fragment definition(250) in accordance with one or more embodiments of the technology. Asshown in FIG. 2.2, a context menu fragment definition (250) may includea context menu fragment identifier (252) and multiple menu options(e.g., menu option X (254), menu option Y (255)). The context menufragment identifier (252) is a unique identifier of a context menufragment. For example, the context menu fragment identifier may be analphanumeric, binary, symbolic or any combination thereof string ofcharacters. Other unique identifiers may be used without departing fromthe scope of the technology. Further, the unique identifier may be aderivable value based on a combination of identifiers.

As discussed above, a menu option is a selectable item by an end-userthat allows the end user to issue a command. Each menu option may have acontext menu option name (e.g., menu option X name (256), menu option Yname (258)) (discussed above with reference to FIG. 2.1), a configurableattribute expression (e.g., configurable attribute expression X (260),configurable attribute expression Y (262)), an action expression (e.g.,action expression X (264), action expression Y (266)), or anycombination thereof.

In one or more embodiments of the technology, a configurable attributeexpression (e.g., configurable attribute expression X (260),configurable attribute expression Y (262)) is a function that definesthe attribute value of a configurable attribute. A menu option may havemultiple configurable attribute expressions, whereby a configurableattribute expression exists for each configurable attribute. In otherembodiments, a single configurable attribute expression may define theattribute values for multiple configurable attributes. In someembodiments, the function is a simple assignment that has a constantconfigurable attribute value. In other embodiments, the configurableattribute expression includes one or more operations in which, given aset of input data, generates output of a configurable attribute value.

In one or more embodiments of the technology, an action expression(e.g., configurable attribute expression X (260), configurable attributeexpression Y (262)) is a function that defines the action to performwhen the menu option is selected. In some embodiments, the function is asimple assignment that has a predefined action value. For example, amenu option to store an instance of a data type may correspond to thesame action regardless of the context. In other embodiments, the actionexpression includes one or more operations in which, given a set ofinput data, generates output of the identifier of the action. Forexample, a menu option to delete may correspond to a first action of anun-validated delete when the end user is an administrator and avalidated delete requiring an additional code when the end user is anemployee.

Similar to a context menu, a context menu fragment definition (250) maybe defined for a particular data type. For example, as shown in FIG.2.2, a context menu fragment may be defined for a child data type (268).A child data type (268) is a data type that inherits the properties of aparent data type (270). For example, the child data type (268) mayinclude and, potentially, extend the properties of the parent data type(270). In one or more embodiments of the technology, the parent datatype (270) does not include or extend the properties defined in thechild data type (268). However, the context menu of the parent data type(270) may reference and use a content menu fragment of the parent'schild data type (268). In other words, the context menu fragment of achild data type is visible to the parent data type of the child datatype, and, thus, may be referenced in a context menu fragment expressionof parent's context menu in accordance with one or more embodiments ofthe technology.

Although not shown in FIGS. 2.1 and 2.2, an executable for the contextmenu may be maintained in a context menu artifact, and an executable forthe context menu fragment may be maintained in a context menu fragmentartifact. In general, an artifact is a data structure or file generatedby the builder to store instruction for the context menu. Thus, the menuoptions, sub-menu options, and context menu fragment expression may bemaintained in a context menu artifact in accordance with one or moreembodiments of the technology. Similarly, the components of a contextmenu fragment may be maintained in a context menu fragment artifact inaccordance with one or more embodiments of the technology.

Further, in some embodiments of the technology, a context menu fragmentmay be a portion of one context menu and the entirety of another contextmenu. For example, the context menu fragment definition may be a contextmenu definition for a child data type while being referenced in acontext menu fragment expression as only a portion of the context menudefinition for the parent data type.

FIG. 3 shows a schematic diagram of a runtime environment (300) inaccordance with one or more embodiments of the technology. As shown inFIG. 3, the runtime environment (300) includes a data repository (302),a page (304), an event bus (310), external sources (306), and a UIengine (308) in accordance with one or more embodiments of thetechnology.

In one or more embodiments of the technology, the data repository (302)is any type of storage unit and/or device (e.g., a file system,database, collection of tables, or any other storage mechanism) forstoring data. Further, the data repository (302) may include multipledifferent storage units and/or devices. The multiple different storageunits and/or devices may or may not be of the same type or located atthe same physical site. The data repository (302) includes functionalityto store context menu fragment artifacts (e.g., context menu fragment Xartifact (312), context menu fragment Y artifact (314)) in accordancewith one or more embodiments of the technology. In some embodiments, thecontext menu fragment artifacts (e.g., context menu fragment X artifact(312), context menu fragment Y artifact (314)) are stored and accessedlocally on a user's computer that executes the browser that displays theweb application. In other words, rather than accessing a server eachtime a user selects to display a context menu, a local repository may beaccessed. In additional or alternative embodiments, the context menufragment artifacts are stored on and retrieved from a server.

Continuing with FIG. 3, a page (304) is a web page of a web application.A page (304) may include inline sources (316), a data type instance(318), and a rendered context menu (320). Inline sources (316) are datasources that are on the page or hidden, but in a definition of the page(304). For example, inline sources may include widgets, data services,other content, and other sources available on the page. A widget is aGUI object on the page, such as a text field, a check box, radio button,tab, and other such UI elements. Data services are sources of end userdata, such as data gathered from the end user and/or a data repositoryin one or more embodiments of the technology. Other content may includepictures, text blocks, and other information displayed on the page.

A data type instance (318) is an instance of a data type. For example, adata type instance may be a particular page (304), a particular object,a widget, or another instance of a data type. A rendered context menu(320) is a context menu that is displayable and/or displayed on the page(304). In one or more embodiments of the technology, the renderedcontext menu appears as any context menu, but includes menu options fromcontext menu fragments. In other words, the rendered context menu has acollection of names of menu options, whereby selection of a menu optionmay cause an action to be performed or a sub-menu option to bedisplayed.

In one or more embodiments of the technology, the page (304) isoperatively connected to a UI engine (308). The connection may be director indirect. Further, the UI engine (308) may be on a local computingdevice executing a browser that is displaying the page (304). The UIengine (308) may be hardware, software, firmware, or a combinationthereof that includes functionality to manage execution of any processesof the page, such as manage the display of context menus.

The UI engine includes a fragment subsystem (322). The fragmentsubsystem (322) may be hardware, software, firmware, or a combinationthereof that includes functionality to manage the selection andobtaining of a context menu fragment based on the context menu fragmentexpression. The fragment subsystem may further include functionality toincorporate a context menu fragment into a rendered context menu.

In one or more embodiments of the technology, the page is operativelyconnected to an event bus (310). An event bus (310) is a bus fortransferring events to the UI engine (308). In other words, thetriggering of an event is managed by the event bus (310), which triggersexecution of appropriate portion of the UI engine (308). For example, ifthe event is a selection to display the context menu, then the event bustransfers control to the fragment subsystem (322). If the event is aselection of a menu option, the event bus (310) may transfer control toanother portion of the UI engine (308).

External sources (306) are sources that exist outside of the page (304).For example, external sources may include UI events and sessionvariables. UI events may include the various interactions between a pageand an end user. For example, a UI event may include a start ofsubmission of data, a selection of a navigation trigger, a switching toanother field, or another event. Session variables may be the same orsimilar to the session variables discussed above with reference toFIG. 1. Further, session variables may also be referred to as sessionparameters. For example, the session variables may include a sessionidentifier, user identifier of a user, identifier of a currentinstruction being executed, browser information, value of variousvariables, and any other state information describing the executionenvironment and execution of the process.

In one or more embodiments of the technology, the inline sources (316),external sources (306), and page (304) may be referred to a context. Inother words, the context describes the entire execution environment ofthe page (304). As discussed above, at least a portion of the contextmenu may be dependent on at least a portion of the context.

While FIGS. 1, 2.1, 2.2, and 3 show a configuration of components, otherconfigurations may be used without departing from the scope of thetechnology. For example, various components may be combined to create asingle component. As another example, the functionality performed by asingle component may be performed by two or more components.

FIGS. 4, 5.1, and 5.2 show flowcharts in accordance with one or moreembodiments of the technology. While the various steps in this flowchartare presented and described sequentially, one of ordinary skill willappreciate that some or all of the steps may be executed in differentorders, may be combined or omitted, and some or all of the steps may beexecuted in parallel. Furthermore, the steps may be performed activelyor passively. For example, some steps may be performed using polling orbe interrupt driven in accordance with one or more embodiments of thetechnology. By way of an example, determination steps may not require aprocessor to process an instruction unless an interrupt is received tosignify that condition exists in accordance with one or more embodimentsof the technology. As another example, determination steps may beperformed by performing a test, such as checking a data value to testwhether the value is consistent with the tested condition in accordancewith one or more embodiments of the technology.

FIG. 4 shows a flowchart for generating a web application design inaccordance with one or more embodiments of the technology. In Step 401,one or more context menu fragment definitions are received in accordancewith one or more embodiments of the technology. In one or moreembodiments of the technology, a context menu fragment definition may begenerated and received in a same or similar manner to generating acontext menu definition.

In particular, the development environment shown in FIG. 1 facilitatesan expression based development of a web application. Thus, using thedeveloper tools offered by the development environment, a user may dragand drop components into a web application design to define variouscomponents of the web application design. Some of the components mayhave predefined templates and logic. In such a scenario, once draggedinto the web application design, the user may submit values of variousparameters of the components. For example, the user may submit a uniqueidentifier, any references, or any other information.

For context menus and context menu fragments, some menu options for thecontext menu or context menu fragments have predefined names, attributevalues, and corresponding actions. Thus, a developer may simply drag themenu option to the context menu definition in a web application design.In some embodiments, the developer may want to create a custom contextmenu option that may or may not be based on a previous context menuoption. If the developer wants to create a custom context menu option,the developer may drag a new menu option to the context menu and definecustom properties of the new menu option, such as the name, andattribute values. The developer may further select a correspondingaction or set of actions from a list of possible actions for the menuoption. Alternatively, in one or more embodiments, the developer maydefine a custom action with one or more steps using an expression in atext box. The developer may define sub-menu options for a context menu.

Within the developer environment, the builder may maintain an internalversion of the web application design, such as in extensible markuplanguage (XML) format that describes the web application design.

Thus, receiving the context menu fragment definition may includereceiving the developer's input through the GUI of the developerenvironment and generating the internal version of the web applicationdesign while the web application design is being developed. In one ormore embodiments of the technology, the developer may generate multiplecontext menu fragment definitions.

Further, in accordance with one or more embodiments of the technology,one or more of the context menu fragment definitions may be copied fromother context menus or context menu fragments. For example, thedeveloper may select a portion of a context menu or context menufragment using the GUI of the developer environment and copy theselection to a new definition. The developer may make any furthermodifications of the copied context menu fragment definition(s).

In Step 403, context menu definitions are received in accordance withone or more embodiments of the technology. Receiving the one or moreparent context menu definitions may be performed in a same or similarmanner discussed above with reference to Step 401. In particular, thedeveloper may provide the definition through the GUI of the developerenvironment as discussed above, and the builder may generate theinternal version. As part of generating the parent context menudefinition, the developer may include a context menu fragmentexpression. In other words, the developer may include a placeholder inparent context menu definition for a context menu fragment and specifythe context menu fragment expression using an expression based language.Specifying the context menu fragment expression may include defining oneor more operations and sources of data for selecting the context menufragment. The developer may also define a default context menu fragmentdefinition or indicate that no context menu fragment definition shouldbe added when an invalid context menu fragment identifier results.

In one or more embodiments of the technology, the context menu fragmentexpression may refer to any context menu fragment, which may itself be acontext menu, that is visible to the context menu fragment expression.For example, the context menu fragments may be visible that are in thesame web application, in the same page, in the same process, or haveother characteristics. By way of another example, when creating thecontext menu fragment definition, the context menu and context menufragments for child data types may be visible to the parent data types.Additionally or alternatively, the context menu and context menufragments for parent data types may be visible to the child data typesin accordance with one or more embodiments of the technology.

Steps 401 and 403 may be performed multiple times to create additionalcontext menu definitions and context menu fragment definitions. Further,additional steps may be performed to create and receive the webapplication design.

In Step 405, a web application is generated from the web applicationdesign in accordance with one or more embodiments of the technology. Inone or more embodiments of the technology, generating the webapplication includes translating the internal version of the webapplication into a computer programming language set of instructions.The generation may be based on predefined templates of code for eachportion of the web application design. The templates may be orderedaccording to the web application design and populated with parameters inthe web application design.

As shown in FIG. 4, one or more embodiments may allow reuse of portionsof context menus through a GUI development environment that usesdragging and dropping of web application components and expression basedinsertion of parameters. Once the web application is built, the webapplication may be executed.

FIGS. 5.1 and 5.2 shows generating a context menu in accordance with oneor more embodiments of the technology. In Step 501, an event triggeringdisplay of the context menu is received. In execution, a data typeinstance or an instance of the data type may be selected by an end userto display a context menu based on a context menu definition. In one ormore embodiments of the technology, the manner of selecting the contextmenu is not dependent on the context. Specifically, an end user mayselect the context menu in the same way and have different menu options(discussed below) presented based on the context.

In Step 503, generating the context menu is initiated in accordance withone or more embodiments of the technology. For example, the data typeinstance that is selected may be identified, and the corresponding datatype determined. Based on the data type, the context menu artifact forcontext menu defined for the data type may be obtained from local and/orremote memory.

In Step 505, a portion of the context menu is generated. The portion maybe generated from the context menu artifact, and may correspond to menuoptions and sub-menu options in the context menu artifact or to acontext menu fragment expression in the context menu artifact. Forexample, if the context menu artifact includes menu options and sub-menuoptions directly, then the menu options are added to the context menuaccording to the context menu artifact, such as in the order andaccording to the attribute in the context menu artifact. If a portioncorresponds to a context menu fragment expression, then the context menufragment expression is executed to add an identified and configuredcontext menu fragment to the context menu. Adding a context menufragment to the context menu is discussed in further detail below and inFIG. 5.2 in accordance with one or more embodiments of the technology.

In Step 507, a determination is made whether another portion exists. Inparticular, multiple portions may exist whereby each portion maycorrespond to a context menu fragment or menu options directly definedin the context menu artifact. If another portion exists, the flowproceeds to Step 505 to add the next portion. Although FIG. 5.1 showsadding portions in sequence, one or more embodiments may add portions inparallel.

Continuing with FIG. 5.1, in Step 509, the context menu is presented inaccordance with one or more embodiments of the technology. Presentingthe context menu may include displaying the context menu, such as in aweb browser. When the context menu is displayed, the user may select anenabled and visible name of a menu option from the context menu to issuea command to perform the action referenced by the menu option. Based onthe selection, the action is performed.

Turning to FIG. 5.2, FIG. 5.2 shows a flowchart for adding a portion tothe context menu when the portion corresponds to a context menufragment. In Step 521, a context menu fragment expression is obtained inaccordance with one or more embodiments of the technology. In one ormore embodiments of the technology, the context menu fragment expressionis obtained from the context menu artifact.

In Step 523, operations in the context menu fragment expression areperformed using data from data sources referenced in the expression toobtain a result. For example, if the context menu fragment expressionspecifies data from data sources, then the data sources in the contextmenu fragment expression are identified. Data is obtained from the oneor more data sources according to the context menu fragment expression.For example, the data may be obtained by accessing inline data sources,a data repository to identify user data, the values of process contextvariables, the values of fields within the page, other data source, or acombination thereof. The expression is executed using the obtained datato obtain a result in accordance with one or more embodiments of thetechnology. Executing the expression may include performing one or moreoperations in the expression. For example, the operations may includecomparing data from a data source to a value, and selecting a contextmenu fragment if the data matches. As a result of executing theexpression, a result is obtained. The result may be a unique identifierof an existing context menu fragment, a unique identifier of the defaultcontext menu fragment, an incorrect identifier, or an error identifierin accordance with one or more embodiments of the technology.

In Step 525, a determination is made whether the result is a validcontext menu fragment identifier. If the result is a valid processfragment identifier, the flow proceeds to Step 527. In Step 527, if theresult is a valid context menu fragment identifier, then the identifiedcontext menu fragment is obtained as the obtained fragment. In otherwords, the context menu fragment artifact corresponding to the contextmenu fragment identifier is obtained from the data repository.

If the result is not a valid context menu fragment identifier, then theflow proceeds to Step 529. In Step 529, the default context menufragment is obtained as the obtained context menu fragment. The defaultcontext menu fragment may be defined within the context menu artifact.Alternatively, the default context menu fragment may be obtained fromthe data repository. In some embodiments, no default exists. In such ascenario, the flow may return to FIG. 5.1 to process the next portion ofthe context menu.

In Step 531, configurable attribute expression(s) and actionexpression(s) for the obtained context menu fragment are obtained. Inone or more embodiments of the technology, for each menu option, insequence and/or in parallel, the configurable attribute expressions andthe action expression(s) may be extracted from the context menu fragmentartifact. Thus, the context menu fragment may be configured for theparticular context in which the context menu fragment is being used.

In Step 533, operations in the configurable attribute expression(s) areperformed to obtain configurable attribute values in accordance with oneor more embodiments of the technology. The operations may be performedin a same or similar manner discussed above with reference to Step 523.For example, portions of the context menu fragment that should bedisabled or hidden are disabled or hidden in the context menu displayedto the user.

In Step 535, the context menu fragment is added to the context menuaccording to the configurable attribute values and actions in accordancewith one or more embodiments of the technology. In one or moreembodiments of the technology, the menu options of the context menufragment are added to the context menu in a same or similar manner toadding menu options from the context menu artifact. In other words, thenames of the menu options may listed in the context menu and enabledand/or displayed according to the configurable attribute values. Thenames are associated with code, such that, when selected, thecorresponding action is performed.

FIGS. 6.1, 6.2, and 6.3 show an example in accordance with one or moreembodiments of the technology. The following example is for explanatorypurposes only and not intended to limit the scope of the technology.

FIG. 6.1 shows an example context menu definition (602) in a developerUI (600) in accordance with one or more embodiments of the technology.The example context menu definition (602) has a context menu fragmentitem (604) and menu options (606). The context menu fragment item hasproperties of a context menu fragment expression having severaloperations (608). Although FIG. 6.1 shows the selection of a Fragment IDor Expression radio buttons, for the purposes of this application, anassignment of a particular Fragment ID may also be deemed an expression.In one or more embodiments of the technology, the expression (608), whenexecuted, loads either one of two context menu fragments: either a‘transformation options’ context menu fragment or a ‘email to admin’context menu fragment, depending on the role of the logged in user.Namely, if the role of the current user is admin, then the‘transformation options’ context menu fragment (shown in FIG. 6.2) isloaded. Otherwise, the ‘email to admin’ context menu fragment (shown inFIG. 6.3) is loaded.

Continuing with the example, FIG. 6.2 shows an example developer UI(620) with the ‘transformation options’ context menu fragment (622). Asshown in the example, when the ‘transformation options’ context menufragment (622), two extra menu options (624) are loaded. One menu optionis to transform the object to PDF and another menu option is totransform the object to HTML.

Continuing with the example, FIG. 6.3 shows an example developer UI(630) with the ‘email to admin’ context menu fragment (632). As shown inthe example, when the ‘email to admin’ context menu fragment (632), asingle extra menu option (634) is loaded. The extra menu option (634) isto email the object to an administrator.

Returning to FIG. 6.1, when the application is deployed and the contextmenu is displayed in the application, the context menu fragmentexpression (608) executes and the user role is used to determine whichcontext menu fragment to load. In this example, if an admin user islogged in then the admin would have menu options to ‘Transform to PDF’and ‘Transform to HTML’ visible as specified in FIG. 6.2. Conversely, ifthe user is not an admin user then the user would see the menu option to‘Email to Admin’ as specified in FIG. 6.3.

As shown in the example, one or more embodiments allow the developer tocreate a context menu that changes depending on the role of the user. Atthe same time, the developer may keep portions of the context menu thesame across all uses. Further, in one or more embodiments of thetechnology, because the context menu fragment may be referenced bydifferent context menus, one or more embodiments may allow for reuse ofcontext menu fragments in accordance with one or more embodiments of thetechnology.

Embodiments of the technology may be implemented on a computing system.Any combination of mobile, desktop, server, embedded, or other types ofhardware may be used. For example, as shown in FIG. 7, the computingsystem (700) may include one or more computer processor(s) (702),associated memory (704) (e.g., random access memory (RAM), cache memory,flash memory, etc.), one or more storage device(s) (706) (e.g., a harddisk, an optical drive such as a compact disk (CD) drive or digitalversatile disk (DVD) drive, a flash memory stick, etc.), and numerousother elements and functionalities. The computer processor(s) (702) maybe an integrated circuit for processing instructions. For example, thecomputer processor(s) may be one or more cores, or micro-cores of aprocessor. The computing system (700) may also include one or more inputdevice(s) (710), such as a touchscreen, keyboard, mouse, microphone,touchpad, electronic pen, or any other type of input device. Further,the computing system (700) may include one or more output device(s)(708), such as a screen (e.g., a liquid crystal display (LCD), a plasmadisplay, touchscreen, cathode ray tube (CRT) monitor, projector, orother display device), a printer, external storage, or any other outputdevice. One or more of the output device(s) may be the same or differentfrom the input device(s). The computing system (700) may be connected toa network (712) (e.g., a local area network (LAN), a wide area network(WAN) such as the Internet, mobile network, or any other type ofnetwork) via a network interface connection (not shown). The input andoutput device(s) may be locally or remotely (e.g., via the network(712)) connected to the computer processor(s) (702), memory (704), andstorage device(s) (706). Many different types of computing systemsexist, and the aforementioned input and output device(s) may take otherforms.

Software instructions in the form of computer readable program code toperform embodiments of the technology may be stored, in whole or inpart, temporarily or permanently, on a non-transitory computer readablemedium such as a CD, DVD, storage device, a diskette, a tape, flashmemory, physical memory, or any other computer readable storage medium.Specifically, the software instructions may correspond to computerreadable program code that, when executed by a processor(s), isconfigured to perform embodiments of the technology.

Further, one or more elements of the aforementioned computing system(700) may be located at a remote location and connected to the otherelements over a network (712). Further, embodiments of the technologymay be implemented on a distributed system having a plurality of nodes,where each portion of the technology may be located on a different nodewithin the distributed system. In one embodiment of the technology, thenode corresponds to a distinct computing device. Alternatively, the nodemay correspond to a computer processor with associated physical memory.The node may alternatively correspond to a computer processor ormicro-core of a computer processor with shared memory and/or resources.

While the technology has been described with respect to a limited numberof embodiments, those skilled in the art, having benefit of thisdisclosure, will appreciate that other embodiments can be devised whichdo not depart from the scope of the technology as disclosed herein.Accordingly, the scope of the technology should be limited only by theattached claims.

What is claimed is:
 1. A method for controlling display of portions ofcontext menus, the method comprising: obtaining an event triggering adisplay of a context menu, based on interaction of a user with a userinterface; in response to obtaining the event: generating a firstportion of the context menu, wherein generating the first portioncomprises: performing a first operation in a first context menu fragmentexpression using first data from a first data source to obtain a firstcontext menu fragment identifier, wherein the first operation uses thefirst data as input and generates an output of the first context menufragment identifier, the first data source comprising a location of thefirst data, the location of the first data not within the first contextmenu fragment expression, selecting a first context menu fragmentidentified by the first context menu fragment identifier, loading theselected first context menu fragment, and adding the loaded firstcontext menu fragment to the context menu, and generating a secondportion of the context menu, wherein generating the second portioncomprises: performing an operation in a second context menu fragmentexpression using second data from a second data source to obtain asecond context menu fragment identifier, the second data sourcecomprising a location of the second data, the location of the seconddata not within the second context menu fragment expression, selecting asecond context menu fragment identified by the second context menufragment identifier, and adding the second context menu fragment to thecontext menu; and presenting the context menu in the user interface. 2.The method of claim 1, further comprising: obtaining the first contextmenu fragment expression from an artifact for the context menu.
 3. Themethod of claim 2, further comprising: obtaining the artifact for thecontext menu in response to the event triggering the display, whereinthe artifact is defined for a parent data type and the first contextmenu fragment is defined for a child data type, and wherein the contextmenu is presented for an instance of the parent data type.
 4. The methodof claim 1, further comprising: performing an operation in aconfigurable attribute expression for the first context menu fragment toobtain a configurable attribute value; and configuring the first contextmenu fragment according to the configurable attribute value.
 5. Themethod of claim 4, wherein the operation in the configurable attributeexpression is performed using third data from a third data source. 6.The method of claim 1, wherein the event is from a page, the contextmenu is presented on the page, and the first data source is an inlinedata source on the page.
 7. The method of claim 1, wherein the event isfrom a page, the context menu is presented on the page, and the firstdata source is external to the page.
 8. The method of claim 1, furthercomprising: obtaining an artifact for the context menu in response tothe event triggering the display; obtaining the first context menufragment expression from the artifact; obtaining a menu option directlyfrom the artifact; and adding the menu option to the context menu.
 9. Asystem for controlling display of portions of context menus, the systemcomprising: a computer processor; and memory comprising: an event busexecutable on the computer processor to: obtain an event triggering adisplay of a context menu, and transmit the event to a user interfaceengine, and the user interface engine comprising a fragment subsystem,the user interface engine executable on the computer processor to:generate a first portion of the context menu, wherein generating thefirst portion comprises: performing a first operation in a first contextmenu fragment expression using first data from a first data source toobtain a first context menu fragment identifier, wherein the firstoperation uses the first data from the first data source as input andgenerates an output comprising the first context menu fragmentidentifier, the first data source comprising a location of the firstdata, the location of the first data not within the first context menufragment expression, selecting a first context menu fragment identifiedby the first context menu fragment identifier, loading the selectedfirst context menu fragment, and adding the loaded first context menufragment to the context menu, generate a second portion of the contextmenu, wherein generating the second portion comprises: performing anoperation in a second context menu fragment expression using second datafrom a second data source to obtain a second context menu fragmentidentifier, the second data source comprising a location of the seconddata, the location of the second data not within the second context menufragment expression, selecting a second context menu fragment identifiedby the second context menu fragment identifier, and adding the secondcontext menu fragment to the context menu; and present the context menuin a user interface.
 10. The system of claim 9, wherein the fragmentsubsystem is executable on the computer processor to: obtain the firstcontext menu fragment expression from an artifact for the context menu;and obtain the artifact for the context menu in response to the eventtriggering the display, wherein the artifact is defined for a parentdata type and the first context menu fragment is defined for a childdata type, and wherein the context menu is presented for an instance ofthe parent data type.
 11. The system of claim 9, wherein the fragmentsubsystem is executable on the computer processor to: perform anoperation in a configurable attribute expression for the first contextmenu fragment to obtain a configurable attribute value; and configurethe first context menu fragment according to the configurable attributevalue.
 12. The system of claim 9, wherein the fragment subsystem isexecutable on the computer processor to: obtain an artifact for thecontext menu in response to the event triggering the display; obtain thefirst context menu fragment expression from the artifact; obtain a menuoption directly from the artifact; and add the menu option to thecontext menu.
 13. A computer program product comprising a non-transitorycomputer readable medium storing computer readable program codeexecutable to: obtain an event triggering a display of a context menu,based on interaction of a user with a user interface; in response toobtaining the event: generate a first portion of the context menu,wherein generating the first portion comprises: performing a firstoperation in a first context menu fragment expression using first datafrom a first data source to obtain a first context menu fragmentidentifier, wherein the first operation uses the first data as input andgenerates an output of the first context menu fragment identifier, thefirst data source comprising a location of the first data, the locationof the first data not within the first context menu fragment expression,selecting a first context menu fragment identified by the first contextmenu fragment identifier, loading the selected first context menufragment, and adding the loaded first context menu fragment to thecontext menu, and generate a second portion of the context menu, whereingenerating the second portion comprises: performing an operation in asecond context menu fragment expression using second data from a seconddata source to obtain a second context menu fragment identifier, thesecond data source comprising a location of the second data, thelocation of the second data not within the second context menu fragmentexpression, selecting a second context menu fragment identified by thesecond context menu fragment identifier, and adding the second contextmenu fragment to the context menu; and present the context menu in theuser interface.
 14. The computer program product of claim 13, whereinthe computer readable program code is executable to: obtain the firstcontext menu fragment expression from an artifact for the context menu.15. The computer program product of claim 14, wherein the computerreadable program code is executable to: obtain the artifact for thecontext menu in response to the event triggering the display, whereinthe artifact is defined for a parent data type and the first contextmenu fragment is defined for a child data type, and wherein the contextmenu is presented for an instance of the parent data type.
 16. Thecomputer program product of claim 13, wherein the computer readableprogram code is executable to: perform an operation in a configurableattribute expression for the first context menu fragment to obtain aconfigurable attribute value; and configure the first context menufragment according to the configurable attribute value.
 17. The computerprogram product of claim 16, wherein the computer readable program codeis executable to perform the operation in the configurable attributeexpression using third data from a third data source.
 18. The computerprogram product of claim 13, wherein the event is from a page, thecontext menu is presented on the page, and the first data source is aninline data source on the page.
 19. The computer program product ofclaim 13, wherein the event is from a page, the context menu ispresented on the page, and the first data source is external to thepage.
 20. The computer program product of claim 13, wherein the computerreadable program code is executable to: obtain an artifact for thecontext menu in response to the event triggering the display; obtain thefirst context menu fragment expression from the artifact; obtain a menuoption directly from the artifact; and add the menu option to thecontext menu.